This invention relates to a method for transforming a digital signal from the time domain into the frequency domain and vice versa.
Domain transformations, for example the discrete cosine transform (DCT), are widely used in modern signal processing industry. Recently, a variant of the DCT, called integer DCT, has attracted a lot of research interests because of its important role in lossless coding applications. The term “lossless” means that the decoder can generate an exact copy of the source signal from the encoded bit-stream.
The DCT is a real-valued block transform. Even if the input block consists only of integers, the output block of the DCT can comprise non-integer components. For convenience, the input block is referred to as input vector and the output block as output vector. If a vector comprises only integer components, it is called an integer vector. In contrast to the DCT, the integer DCT generates an integer output vector from an integer input vector. For the same integer input vector, the integer output vector of integer DCT closely approximates the real output vector of DCT. Thus the integer DCT keeps all the good properties of the DCT in spectrum analysis.
An important property of the integer DCT is reversibility. Reversibility means that there exists an integer inverse DCT (IDCT) so that if the integer DCT generates an output vector y from an input vector x, the integer IDCT can recover the vector x from the vector y. Sometimes the integer DCT is also referred to as the forward transform, and the integer IDCT as the backward or inverse transform.
A transform called integer modified discrete cosine transform (IntMDCT) is recently proposed and used in the ISO/IEC MPEG-4 audio compression. The IntMDCT can be derived from its prototype—the modified discrete cosine transform (MDCT). The disclosure by H. S. Malvar in “Signal Processing with Lapped Transforms” Artech House, 1992 provides an efficient realization of MDCT by cascading a bank of Givens rotations with a DCT-IV block. It is well known that Givens rotation can be factorised into three lifting steps for mapping integers to integers. See e.g., R. Geiger, T. Sporer, J. Koller, K. Brandenburg, “Audio Coding based on Integer Transforms” AES 111th Convention, New York, USA, September 2001.
Therefore, the realization of IntMDCT relies on an efficient implementation of integer DCT-IV.
Integer transforms can be directly converted from their prototypes by replacing each Givens rotation with three lifting steps. Because in each lifting step there is one rounding operation, the total rounding number of an integer transform is three times the Givens rotation number of the prototype transform. For discrete trigonometric transforms (for example the Discrete Fourier Transform (DFT) or the Discrete Cosine Transform (DCT)), the number of Givens rotations involved is usually at N log2 N level, where N is the size of the blocks, i.e. the amount of data symbols included in each block, the digital signal is divided into. Accordingly, the total rounding number is also at N log2 N level for the family of directly converted integer transforms. Because of the roundings, an integer transform only approximates its floating-point prototype. The approximation error increases with the number of roundings.
Accordingly what is needed are systems and methods for domain transforming a digital signal in a more efficient manner.